#!/usr/bin/env bash
#-------------------------------------------------------
#	FileName	: 新建zenity表单.sh
#	Author		：hpy
#	Date		：2020年11月08日
#	Description	：
#------------------------------------------------------- 
file=`dirname $0`/mform.csv

cd `dirname $0`
lookup()
{
	if [ ! -f "$file" ]
	then
		#警告对话框
		zenity --warning \
		--text="查询失败,没有该文件！"
		exit 0
	fi
	total=`cat $file | wc -l` #获取文件行数
	if [ $total -eq 1 ]
	then
		#警告对话框
		zenity --warning \
		--text="数据库中账户密码为空!请添加!"
		exit 0	
	fi
	#列表框使用
	echo 'zenity --list\
        --editable \
		--title=所有账号\
		--column=账号平台 --column=账户名 --column=账号 --column=登录密码 --column=网址 --column=说明 --column=新建日期\'>tmp

	cnt=2
	#total=20
	while [ $cnt -le $total ]
	do
		#echo $cnt
		doc=`awk 'NR=='$cnt'' $file` #读取文件第n行内容
		#echo $doc
		tt0=${doc// /''} #首先替换文件中空格，避免之后因为空格影响zenity的使用
		tt1=${tt0//,,,,,,/,-,-,-,-,-,} #填充表格中为空的内容为 -
		tt2=${tt1//,,,,,/,-,-,-,-,} #填充表格中为空的内容为 -
		tt3=${tt2//,,,,/,-,-,-,} #填充表格中为空的内容为 -
		tt4=${tt3//,,,/,-,-,} #填充表格中为空的内容为 -
		tt5=${tt4//,,/,-,} #
		t1=${tt5//,/ } #替换csv分隔逗号为空格，用于zenity的list显示
		#echo $t1
		if [ $cnt -eq  $total ] #添加内容到文件指令，准备读取显示list
		then
			echo ' '${t1}>>tmp
		else
			echo ' '${t1}'\'>>tmp
		fi	
		cnt=$[$cnt+1]
	done
		
	#读取文件指令并执行
	while read line
	do
	$line &
	done < tmp

	rm tmp
	echo over---------------------	
}

if [ "$1" == "-l" ] #查询所有账户
then
	lookup
	exit 0
fi
#查找关键字并列出
if [ "$1" == "-f" ];then
    fbuf=`dirname $0`/fbuf
    echo "账号平台,账户名,账号,登录密码,网址,说明,新建日期" > $fbuf
    grep $2 $file >> $fbuf
    echo "-,-,-,-,-,-,-" >> $fbuf #
    file=$fbuf
    lookup
    sudo rm -f $fbuf
    exit 0
fi
#查询关键字并在终端直接显示结果
if [ "$1" == "-fc" ];then
    fbuf=`dirname $0`/fbuf
    echo "账号平台,账户名,账号,登录密码,网址,说明,新建日期" > $fbuf
    grep $2 $file >> $fbuf
    cat $fbuf
    sudo rm -f $fbuf
    exit 0
fi


if [ "$1" == "-help" ] #将密码文件设置为所有人可读写
then
	echo "用法:mpasswd [-参数]"
	echo "	mpasswd 		新建密码"
	echo "	mpasswd -l		查看密码"
	echo ""
	echo "	注意:添加密码时不能让账户平台为空，不然之后查询时将会出错！"
	echo "	使用用法中pw表示密码!请确保你加密和解密的密码一样！"
	echo "	当使用mpasswd命令不行时，请将上述mpasswd替换为sudo bash ~/.hp_passwd/hp_passwd.sh"
	exit 0
fi

if [ ! -f "$file" ]
then
	#问题对话框
	getYN=`zenity --question --text="没有新的密码数据库，你要新建一个吗？"`
	case $? in
         0)
			touch $file
			#sudo chown root:root $file
			#sudo chmod 600 $file
			echo "账号平台,账户名,账号,登录密码,网址,说明,新建日期">>$file
			echo "----------------------------"
		;;
         1)
                echo "停止执行"
                exit 0
                ;;
        -1)
                echo "发生意外错误。"
                exit 0
                ;;
	esac

fi

new_passwd()
{
	#表单对话框
	#表单对话框
	zenity --forms --title="新建密码" \
		--text="添加新账户到密码管理" \
		--separator="," \
		--add-entry="账号平台" \
		--add-entry="账户名" \
		--add-entry="账号"  \
		--add-entry="登录密码" \
		--add-entry="网址"  \
		--add-entry="说明"  \
		--add-calendar="新建日期">>$file
}

new_passwd

